Method, apparatus, and device for transmitting file based on bmc, and medium

ABSTRACT

A method, an apparatus, and a device for transmitting a file based on a BMC, and a medium are provided. The method includes: sending, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC; controlling the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command; and controlling the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus. With the method, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing.

This application claims the priority to Chinese Patent Application No. 201810551676.8, titled “METHOD, APPARATUS, AND DEVICE FOR TRANSMITTING FILE BASED ON BMC, AND MEDIUM”, filed on May 31, 2018 with the China National Intellectual Property Administration, which is incorporated herein by reference in its entirety.

FIELD

The present disclosure relates to the field of file transmission, and in particular to a method, an apparatus, and a device for transmitting a file based on a BMC, and a medium.

BACKGROUND

A BMC is a baseboard management system located on a server, and is responsible for important functions of the server including asset information display, hardware monitoring, heat dissipation regulation, system configuration, remote monitoring, log collection, fault diagnosis, and system maintenance.

In general application scenarios in the field, two or more BMCs are required to perform monitoring and management on a server. In the above scenario, multiple BMCs include a primary BMC that directly interacts with a user, and a slave BMC that interacts with the primary BMC and assists in operation of the primary BMC, where the primary BMC responds to the user's control by providing a network interface and a web page. The BMCs are connected with each other through an I2C bus. On this basis, both the primary BMC and the slave BMC run an IPMI process, and the primary BMC transmits a control command to the slave BMC based on an IPMI protocol, to control the slave BMC.

Due to growing demands of users, not only control commands, but also data files need to be transmitted between the BMCs. However, since there is already a set of command transmission mechanism for the I2C bus in a BMC system, and under the command transmission mechanism, a data file transmitted between the BMCs is determined by the system to be a control command, and is intercepted and verified by a command processing function of the IPMI process. However, the data file does not have a given data format of the control command, which blocks the IPMI process and causes crash of the IPMI process, such that the data file can not be transmitted between BMCs.

It can be seen that it is an urgent problem to be solved by those skilled in the art to provide a method for transmitting a file based a BMC, to implement data file transmission between BMCs.

SUMMARY

It is an object of the present disclosure to provide a method, an apparatus, and a device for transmitting a file based a BMC, and a medium to implement data file transmission between BMCs.

In order to solve the above technical problem, a method for transmitting a file based on a BMC is provided according to the present disclosure, which includes:

sending, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC;

controlling the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command; and

controlling the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.

Preferably, the controlling the second BMC to stop the IPMI process running based on the I2C bus in response to the preset command may include:

modifying a value of a preset flag variable from an initial value to a flag value in response to the preset command, and monitoring the flag variable by using a preset process, and

stopping the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.

Preferably, after transmitting the data file to the second BMC, the method may further include:

modifying the value of the flag variable to the initial value, and restarting the IPMI process by calling the system function.

Preferably, after the stopping the IPMI process running based on the I2C bus by calling the system function, the method may further include:

recording, in a log file, a time instant at which the IPMI process is stopped and parameter information of the first BMC in correspondence with each other.

Preferably, the initial value may be 0, and the flag value may be 1.

Preferably, the data file may be a mirror file of a bin type.

Further, an apparatus for transmitting a file based on a BMC, is further provided according to the present disclosure, which includes: a command sending module, a process stop module, and a file transmission module.

The command sending module is configured to send, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC.

The process stop module is configured to control the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command.

The file transmission module is configured to control the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.

Preferably, the process stop module may further include a variable modification module and a monitoring calling module.

The variable modification module is configured to modify a value of a preset flag variable from an initial value to a flag value in response to the preset command.

The monitoring calling module is configured to monitor the flag variable by using a preset process, and stop the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.

A device for transmitting a file based on a BMC is further provided according to the present disclosure, which includes a memory and a processor.

The memory is configured to store a computer program.

The processor is configured to execute the computer program to implement steps of the above method for transmitting a file based on a BMC.

A computer readable storage medium is further provided according to the present disclosure. The computer readable storage medium stores a computer program, the computer program is executed by a processor to implement steps of the above method for transmitting a file based on a BMC.

With the method for transmitting a file based on a BMC according to the present disclosure, the preset command is sent to the second BMC before the first BMC is used to transmit the data file to the second BMC, to control the second BMC to stop the IPMI process running on the second BMC based on the I2C bus in response to the preset command, and then the first BMC is controlled to transmit the data file to the second BMC by using the communication function of the I2C bus. According to the method, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file transmitted between the BMCs is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing, thereby implementing transmission of data files between BMCs. In addition, an apparatus and a device for transmitting a file based on a BMC, and a medium are provided according to the present disclosure, which have the same beneficial effects as described above.

BRIEF DESCRIPTION OF THE DRAWINGS

The drawings to be used in the description of the embodiments are described briefly as follows, so that the technical solutions according to the embodiments of the present disclosure become clearer. It is apparent that the drawings in the following description only illustrate some embodiments of the present disclosure. For those skilled in the art, other drawings may be obtained according to these drawings without any creative work.

FIG. 1 is a flowchart of a method for transmitting a file based on a BMC according to an embodiment of the present disclosure;

FIG. 2 is a flowchart of a method for transmitting a file based on a BMC according to another embodiment of the present disclosure; and

FIG. 3 is a schematic structural diagram of an apparatus for transmitting a file based on a BMC according to an embodiment of the present disclosure.

DETAILED DESCRIPTION OF THE EMBODIMENTS

The technical solutions according to the embodiments of the present disclosure are described clearly and completely in conjunction with the drawings hereinafter. It is apparent that the described embodiments are only a few rather than all of the embodiments according to the present disclosure. Any other embodiments obtained by those skilled in the art based on the embodiments in the present disclosure without any creative work fall into the scope of the present disclosure.

The core of the present disclosure is to provide a method for transmitting a file based on a BMC to implement data file transmission between BMCs. Another core of the present disclosure is to provide an apparatus, a device for transmitting a file based on a BMC, and a medium.

For those skilled in the art better understanding the technical solutions of the present disclosure, hereinafter the present disclosure will be further described in detail in conjunction with the drawings and embodiments.

First Embodiment

FIG. 1 is a flowchart of a method for transmitting a file based on a BMC according to an embodiment of the present disclosure. Referring to FIG. 1, the method for transmitting a file based on a BMC includes the following steps S10 to S13.

In Step S10, a preset command is sent by using a first BMC to a second BMC before the first BMC transmits a data file to the second BMC.

It is to be noted that the BMC (Baseboard Management Controller) mentioned in this step is a small operating system independent of a server system, and is generally integrated on a server motherboard or is inserted in various forms such as PCIE into a chip of the server motherboard. The BMC follows the IPMI specification, which is an industrial standard and describes management functions (including local or remote diagnostics, console support, configuration management, hardware management, and troubleshooting) that are built into the motherboard. The first BMC in this step represents a BMC that initiates data file transmission, and the second BMC represents a BMC that receives the data file transmitted by the first BMC, so the “first BMC” and “second BMC” are irrelevant to a performance of the BMC itself, but depend on the operation performed by the BMC in specific scenarios. In this step, the preset command is a control command following the IPMI specification. After the preset command is sent to the second BMC by the first BMC, the second BMC can analyze and responds to the control command based on the IPMI specification by using a command processing function.

In Step S11, the second BMC is controlled to stop an IPMI process running based on an I2C bus in response to the preset command.

The I2C (Inter-Intergrated Circuit) bus is a simple, bidirectional binary synchronous serial bus that requires only two wires to transmit information between devices connected to the bus.

It is to be noted that, the IPMI process is a logical process established based on a connection implemented with hardware. In the present disclosure, the BMC is carried by a chip, and chips are connected through the I2C bus. Therefore, a communication between the first BMC and the second BMC based on the IPMI process is established based on the I2C bus. It should be understood that, after the second BMC stops the IPMI process, the communication based on the IPMI process between the first BMC and the second BMC is cut off, so the a data file transmitted by the first BMC to the second BMC is not determined as the control command, and is not intercepted and verified by the IPMI process in the second BMC.

In Step S12, the first BMC is controlled to transmit the data file to the second BMC by using a communication function of the I2C bus.

In the method, data transmission association is established between the first BMC and the second BMC based on the I2C bus, and the I2C bus has a preset communication function for implementing data transmission between hardware devices at both terminals of the I2C bus. Therefore, in this step, the data file is directly transmitted to the second BMC by using the communication function of the I2C bus, to implement data transmission. The focus of this step is to avoid transmission of the data file by using the transmission mechanism provided by the IPMI process, and how to transmit the data file by using the communication function of the I2C bus and the content of the communication function are not key points and are well known to those skilled in the art, and thus are not described herein.

It is to be noted that, the data file is essentially distinguished from the control command mentioned in the present disclosure in that the data format of the data file is different from the given data format of the control command, and is difficult to be converted into the given data format of the control command.

With the method for transmitting a file based on a BMC according to the present disclosure, the preset command is sent to the second BMC before the first BMC is used to transmit the data file to the second BMC, to control the second BMC to stop the IPMI process running on the second BMC based on the I2C bus in response to the preset command, and then the first BMC is controlled to transmit the data file to the second BMC by using the communication function of the I2C bus. According to the method, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file transmitted between the BMCs is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing, thereby implementing transmission of data files between BMCs.

Second Embodiment

Based on the above embodiments, a number of preferred embodiments are also provided in the present disclosure as follows.

FIG. 2 is a flowchart of a method for transmitting a file based on a BMC according to another embodiment of the present disclosure, where step S10 and step S12 are the same as those in FIG. 1 and will not be described again.

As shown in FIG. 2, as a preferred embodiment, step S11 includes the following steps S20 and S21.

In step S20, a value of a preset flag variable is modified from an initial value to a flag value is response to the preset command.

In Step S21, the flag variable is monitored by using a preset process, and the IPMI process running based on the I2C bus is stopped by calling a system function when the value of the flag variable is the flag value.

It is to be noted that, since in the present disclosure both the control command and the data file are transmitted between the BMCs, the flag variable in this embodiment is used to indicate the content currently transmitted between the BMCs. In a case that the value of the flag variable is the flag value, it is indicated that the data file is to be transmitted between the BMCs currently. Therefore, the value of the preset flag variable is modified from the initial value to the flag value is response to the preset command for indicating data file transmission. The flag variable is monitored by using the preset process, and when the value of the flag variable is the flag value, an operation corresponding to a case that the value of the flag variable is the flag value is performed, that is, the IPMI process running based on the I2C bus is stopped by calling the system function. By using the flag variable, the preset process is accurately instructed to perform a corresponding operation. Since the flag variable has a wide value range, the value of the flag variable can be configured corresponding to operations in various cases, thus improving the expansibility.

On the basis of the above embodiments, as a preferred embodiment, after the data file is transmitted to the second BMC, the method further includes:

modifying the value of the flag variable to the initial value and restarting the IPMI process by calling the system function.

It should be understood that, in this step, when the value of the flag variable is the initial value, it is indicated that a control command is to be transmitted between the BMCs. Considering that the control command is transmitted between the BMCs in most cases of communication, and in order that the transmission of the control command is not affected due to the stopped IPMI process when the transmission of the data file between the BMCs is finished, in this embodiment, after the data file is transmitted to the second BMC, the value of the flag variable is modified to the initial value, and the IPMI process is restarted by calling the system function, such that the control command can be transmitted between the BMCs to ensure the overall communication availability between the BMCs.

On the basis of the above-mentioned embodiments, as a preferred embodiment, after the IPMI process running based on the I2C bus is stopped by calling the system function, the method further includes:

recording, in a log file, a time instant at which the IPMI process is stopped and parameter information of the first BMC in correspondence with each other.

After the time instant at which the IPMI process is stopped and the parameter information of the first BMC are recorded in correspondence with each other in the log file, time instants at which data files are transmitted between the BMCs and the parameter information of the first BMC at each time instant can be acquired from the log file. It is to be noted that the parameter information of the first BMC characterizes a running state of the first BMC when the data file is transmitted, and if abnormality occurs during transmission of the data file between the BMCs, the cause of the abnormality can be analyzed based on the content of the log file, thereby improving the efficiency for handling the abnormality.

Based on the above-described embodiments, as a preferred embodiment, the initial value is 0, and the flag value is 1.

It should be understood that, the initial value being 0 and the flag value being 1 is applicable for the case where the control command and the data file are transmitted between the BMCs. In this embodiment, the setting of the initial value and the flag value is relatively simple, thus a setting error which leads to a reduced overall availability can be avoided.

In addition, as a preferred embodiment, the data file is a mirror file of a bin type.

During use of the BMC, the version of the BMC needs to be upgraded according to actual use requirements. Since the bin type file is a file of a type that can be read and parsed by the BMC, an update firmware of the BMC can be carried in the form of a mirror file of a bin type. The mirror file is transmitted as a data file between the BMCs, and the firmware version of the BMC is upgraded by using the mirror file. Therefore, the mirror file of the bin type can be manually loaded onto one BMC, and is transmitted from the BMC to another BMC, thereby upgrading all of the BMCs, which improves the efficiency of updating the firmware version of the BMCs.

Third Embodiment

The embodiments of the method for transmitting a file based on a BMC are described in detail above. An apparatus for transmitting a file based on a BMC corresponding to the method is further provided according to the present disclosure. Since the apparatus disclosed in the embodiments corresponds to the method disclosed in the embodiments, for relevant parts, reference may be made to the description of the method, which is not described here again.

FIG. 3 is a schematic structural diagram of an apparatus for transmitting a file based on a BMC according to an embodiment of the present disclosure. The apparatus for transmitting a file based on a BMC according to an embodiment of the present disclosure includes a command sending module 10, a process stop module 11, and a file transmission module 12.

The command sending module 10 is configured to send a preset command to a second BMC by using a first BMC before the first BMC transmits a data file to the second BMC.

The process stop module 11 is configured to control the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command.

The file transmission module 12 is configured to control the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.

With the apparatus for transmitting a file based on a BMC according to the present disclosure, the preset command is sent to the second BMC before the first BMC is used to transmit the data file to the second BMC, to control the second BMC to stop the IPMI process running on the second BMC based on the I2C bus in response to the preset command, and then the first BMC is controlled to transmit the data file to the second BMC by using the communication function of the I2C bus. Based on the apparatus, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file transmitted between the BMCs is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing, thereby implementing transmission of data files between BMCs.

Based on the third embodiment, the process stop module 11 further includes a variable modification module and a monitoring calling module.

The variable modification module is configured to modify a value of a preset flag variable from an initial value to a flag value in response to the preset command.

The monitoring calling module is configured to monitor the flag variable by using a preset process, and stop the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.

Fourth Embodiment

A device for transmitting a file based on a BMC is further provided according to the present disclosure. The device includes a memory and a processor.

The memory is configured to store a computer program.

The processor is configured to execute the computer program to implement steps of the above method for transmitting a file based on a BMC.

With the device for transmitting a file based on a BMC according to the present disclosure, the preset command is sent to the second BMC before the first BMC is used to transmit the data file to the second BMC, to control the second BMC to stop the IPMI process running on the second BMC based on the I2C bus in response to the preset command, and then the first BMC is controlled to transmit the data file to the second BMC by using the communication function of the I2C bus. Based on the device, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file transmitted between the BMCs is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing, thereby implementing transmission of data files between BMCs.

A computer readable storage medium storing a computer program is further provided according to the present disclosure. The computer program is executed by a processor to implement steps of the above method for transmitting a file based on a BMC.

With the computer readable storage medium for transmitting a file based on a BMC according to the present disclosure, the preset command is sent to the second BMC before the first BMC is used to transmit the data file to the second BMC, to control the second BMC to stop the IPMI process running on the second BMC based on the I2C bus in response to the preset command, and then the first BMC is controlled to transmit the data file to the second BMC by using the communication function of the I2C bus. Based on computer readable storage medium, when the data file is transmitted between the BMCs, the IPMI process running on the BMC receiving the data file is stopped, such that the data file transmitted between the BMCs is not intercepted and verified by the command processing function of the IPMI process, and the IPMI process is prevented from being blocked and crashing, thereby implementing transmission of data files between BMCs.

The method, the apparatus, and the device for transmitting a file based on a BMC, and the medium according to the present disclosure are described in detail above. In the present specification, the embodiments are described in progressive manner. Each embodiment mainly focuses on an aspect different from other embodiments, and reference can be made to these similar parts among the embodiments. The apparatus disclosed in the embodiment corresponds to the method disclosed in the embodiment, and is described relatively simply. For detailed description of the apparatus, reference may be made to the related description of the method. It is to be noted that, any improvement and modification on the present disclosure will be apparent to those skilled in the art without departing from the spirit and scope of the present disclosure.

It is also to be noted that in the present specification, the relationship terms such as “first”, “second” and the like are only used herein to distinguish one entity or operation from another, rather than to necessitate or imply that an actual relationship or order exists between the entities or operations. Furthermore, the terms such as “include”, “comprise” or any other variants thereof mean to be non-exclusive. Therefore, a process, a method, an article or a device including a series of elements include not only the disclosed elements but also other elements that are not clearly enumerated, or further include inherent elements of the process, the method, the article or the device. Unless expressively limited, the statement “including a . . . ” does not exclude the case that other similar elements may exist in the process, the method, the article or the device other than enumerated elements. 

1. A method for transmitting a file based on a BMC, comprising: sending, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC; controlling the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command; and controlling the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.
 2. The method according to claim 1, wherein the controlling the second BMC to stop the IPMI process running based on the I2C bus in response to the preset command comprises: modifying a value of a preset flag variable from an initial value to a flag value in response to the preset command, and monitoring the flag variable by using a preset process, and stopping the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.
 3. The method according to claim 2, wherein after transmitting the data file to the second BMC, the method further comprises: modifying the value of the flag variable to the initial value, and restarting the IPMI process by calling the system function.
 4. The method according to claim 2, wherein after the stopping the IPMI process running based on the I2C bus by calling the system function, the method further comprises: recording, in a log file, a time instant at which the IPMI process is stopped and parameter information of the first BMC in correspondence with each other.
 5. The method according to claim 2, wherein the initial value is 0, and the flag value is claim
 1. 6. The method according to claim 1, wherein the data file is a mirror file of a bin type.
 7. An apparatus for transmitting a file based on a BMC, comprising: a command sending module, configured to send, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC; a process stop module, configured to control the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command; and a file transmission module, configured to control the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.
 8. The apparatus according to claim 7, wherein the process stop module further comprises: a variable modification module, configured to modify a value of a preset flag variable from an initial value to a flag value in response to the preset command, and a monitoring calling module, configured to monitor the flag variable by using a preset process, and stop the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.
 9. A device for transmitting a file based on a BMC, comprising: a memory, configured to store a computer program; and a processor, configured to execute the computer program to implement steps of sending, by using a first BMC, a preset command to a second BMC, before the first BMC transmits a data file to the second BMC, controlling the second BMC to stop an IPMI process running based on an I2C bus in response to the preset command, and controlling the first BMC to transmit the data file to the second BMC by using a communication function of the I2C bus.
 10. A computer readable storage medium, storing a computer program, the computer program being executed by a processor to implement steps of the method for transmitting a file based on a BMC according to claim
 1. 11. The device according to claim 9, wherein the controlling the second BMC to stop the IPMI process running based on the I2C bus in response to the preset command comprises: modifying a value of a preset flag variable from an initial value to a flag value in response to the preset command, and monitoring the flag variable by using a preset process, and stopping the IPMI process running based on the I2C bus by calling a system function when the value of the flag variable is the flag value.
 12. The device according to claim 11, wherein after transmitting the data file to the second BMC, the processor is further configured to execute the computer program to implement a step of: modifying the value of the flag variable to the initial value, and restarting the IPMI process by calling the system function.
 13. The device according to claim 11, wherein after the stopping the IPMI process running based on the I2C bus by calling the system function, the processor is further configured to execute the computer program to implement a step of: recording, in a log file, a time instant at which the IPMI process is stopped and parameter information of the first BMC in correspondence with each other.
 14. The device according to claim 11, wherein the initial value is 0, and the flag value is
 1. 15. The device according to claim 9, wherein the data file is a mirror file of a bin type. 